#pragma once
#include "dxrTypes.h"
class IResourceTranslator
{
public:
    virtual ~IResourceTranslator() {}

    virtual ID3D12FencePtr getFence(ID3D12Device* dxr_device) = 0;
    virtual uint64_t insertSignal() = 0;

    virtual bool createTemporaryTexture(TextureDataBrigePtr tdb) = 0;
    virtual uint64_t syncTexture(TextureDataBrigePtr& tex, uint64_t fence_value_to_wait) = 0;
    virtual BufferDataBrigePtr translateBuffer(GPUResourcePtr ptr) = 0;
    virtual bool updateBuffer(BufferDataBrigePtr& buf) = 0;
};
using IResourceTranslatorPtr = std::shared_ptr<IResourceTranslator>;

IResourceTranslatorPtr CreateResourceTranslator();
